package com.yf.system.utils;

import java.util.ArrayList;
import java.util.List;


/**
 * 比较两个集合是否一致
 * @author bool
 */
public class ListUtils {

    /**
     * 比较填空题是否正确
     * @param standard
     * @param input
     * @return
     */
    public static boolean compareList(boolean sort, List<String> standard, List<String> input) {
        if(sort){
            return compareListSort(standard, input);
        }else{
            return compareListNoSort(standard, input);
        }
    }

    /**
     * 比较填空题是否正确
     * @param standard
     * @param input
     * @return
     */
    public static boolean compareListSort(List<String> standard, List<String> input) {

        // 数量不一致，错误
        if(standard.size()!=input.size()){
            return false;
        }

        out:
        for(int i=0;i<standard.size(); i++){
            // 值为一样的
            if(standard.get(i).equals(input.get(i))){
                continue;
            }
            // 多备选情况
            String [] arr = standard.get(i).split("\\|\\|");
            for(String str: arr){
                if(str.equals(input.get(i))){
                    continue out;
                }
            }
            return false;
        }

        return true;
    }


    /**
     * 比较填空题是否正确
     * @param standard
     * @param input
     * @return
     */
    public static boolean compareListNoSort(List<String> standard, List<String> input) {

        // 数量不一致，错误
        if(standard.size()!=input.size()){
            return false;
        }

        out:
        for(String std: standard){

            // 只要一个符合就正确
            for(String ua: input){
                if(std.equals(ua)){
                    continue out;
                }
            }

            // 多备选情况
            String [] arr = std.split("\\|\\|");
            for(String str: arr){
                for(String ua: input){
                    if(str.equals(ua)){
                        continue out;
                    }
                }
            }

            return false;
        }

        return true;
    }



    public static void main(String[] args) {


        List<String> list1 = new ArrayList<>();
        list1.add("10||十");
        list1.add("12||十二");

        List<String> list2 = new ArrayList<>();
        list2.add("12");
        list2.add("10");

        System.out.println("比较结果："+compareList(false, list1, list2));
    }
}
